এক টেবিলের FOREIGN
KEY
অন্য টেবিলের PRIMARY
KEY
কে নির্দেশ করে। সুতরাং দুটি টেবিলের মধ্যে সংযোগ সৃষ্টি করে।
দুটি টেবিলের সংযোগ বিচ্ছিন্ন করে এমন ক্রিয়া কলাপে FOREIGN
KEY
কনস্ট্রেইন্ট বাধা দেয়।
FOREIGN
KEY
কনস্ট্রেইন্ট ফরেন কী কলামে অবৈধ ডেটা ইনপুটেও বাধা দেয়, কারন প্রাইমারি কী কলাম এর ভ্যালুই হলো ফরেন কি কলাম এর ভ্যালু।
চলুন একটি উদাহরণের সাহায্য FOREIGN
KEY
বুঝার চেষ্টা করি। নিম্নের টেবিল দুটিতে ভালভাবে লক্ষ্য করুনঃ
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
---|---|---|---|---|
১ | ১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
২ | ১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
৩ | ১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
৪ | ১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
৫ | ১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
নিচের অংশটি "Student_result" টেবিল থেকে নেওয়া হয়েছেঃ
আইডি নং | রোল নাম্বার | ফলাফল |
---|---|---|
১ | ১০১ | A+ |
২ | ১০২ | A+ |
৩ | ১০৩ | A+ |
৪ | ১০৪ | A+ |
৫ | ১০৫ | A+ |
উপরের টেবিল দুটিতে লক্ষ্য করলে দেখবেন, "Student_result" টেবিলের "Roll_number" কলামটি "Student_details" টেবিলের "Roll_number" কলামকে নির্দেশ(Point) করছে।
"Student_details" টেবিলের "Roll_number" কলামটি হচ্ছে ঐ টেবিলের PRIMARY
KEY
কনস্ট্রেইন্ট এবং "Student_result" টেবিলের "Roll_number" কলামটি হচ্ছে "Student_result" টেবিলের FOREIGN
KEY
কনস্ট্রেইন্ট।
বিঃদ্রঃ PRIMARY
KEY
এবং FOREIGN
KEY
কে যথাক্রমে পিতা এবং পুত্র বলা হয়। পুত্রের কোনো কিছু প্রয়োজন হলে সে পিতার কাছেই চাই। একইভাবে FOREIGN
KEY
তার প্রয়োজনে PRIMARY
KEY
এর কাছে রেফার করে।
নিম্নের SQL স্টেটমেন্টটি "Student_result" টেবিল তৈরি করার সময় "Roll_number" কলামে একটি FOREIGN
KEY
কনস্ট্রেইন্ট সেট করবেঃ
MySQL এর জন্যঃ
CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) NOT NULL,
Result varchar(255) NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (Roll_number) REFERENCES Student_details(Roll_number)
);
Oracle/SQL Server/MS Access এর জন্যঃ
CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) FOREIGN KEY REFERENCES Student_details(Roll_number),
Result varchar(255) NOT NULL
);
FOREIGN
KEY
কনস্ট্রেইন্ট এর নামকরন এবং একাধিক কলামে FOREIGN
KEY
কনস্ট্রেইন্ট ডিফাইন করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করা হয়ঃ
MySQL/Oracle/SQL Server/MS Access এর জন্যঃ
CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) NOT NULL,
Result varchar(255) NOT NULL,
PRIMARY KEY (Id),
CONSTRAINT link_Student_result FOREIGN KEY(Roll_number) REFERENCES Student_details(Roll_number)
);
নিম্নের SQL স্টেটমেন্টটি "Student_result" টেবিল পরিবর্তন(modify) করার সময় "Roll_number" কলামে FOREIGN
KEY
কনস্ট্রেইন্ট সেট করবেঃ
MySQL/Oracle/SQL Server/MS Access এর জন্যঃ
ALTER TABLE Student_result
ADD FOREIGN KEY (Roll_number)
REFERENCES Student_details(Roll_number);
FOREIGN
KEY
কনস্ট্রেইন্ট এর নামকরন এবং একাধিক কলামে FOREIGN
KEY
কনস্ট্রেইন্ট ডিফাইন করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করা হয়ঃ
MySQL/Oracle/SQL Server/MS Access এর জন্যঃ
ALTER TABLE Student_result
ADD CONSTRAINT link_Student_result
ADD FOREIGN KEY (Roll_number)
REFERENCES Student_details(Roll_number);
FOREIGN
KEY
কনস্ট্রেইন্টকে ডিলেট করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করুনঃ
MySQL এর জন্যঃ
ALTER TABLE Student_result
DROP FOREIGN KEY link_Student_result;
Oracle/SQL Server/MS Access এর জন্যঃ
ALTER TABLE Student_result
DROP CONSTRAINT link_Student_result;
আরও দেখুন...